package com.otitan.la.forest.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.otitan.la.forest.system.dto.MenuDTO;
import com.otitan.la.forest.system.entity.MenuEntity;
import com.otitan.la.forest.system.vo.MenuTreeVO;
import com.otitan.webapp.framework.basepro.model.DataResult;
import org.springframework.validation.BindingResult;

import java.util.List;

/**
 * 菜单表
 *
 * @author jiacs
 * @email xxx
 * @date 2020-09-15 10:34:19
 */
public interface MenuService extends IService<MenuEntity> {
    /**
     * 新增
     * @return
     */
    DataResult add(MenuEntity menu, BindingResult bindingResult);

    /**
     * 批量删除
     * @return
     */
    DataResult batchDelete(List<String> ids);

    /**
     * 修改
     * @return
     */
    DataResult editor(MenuEntity menu, BindingResult bindingResult);

    /**
     * 列表查询（分页）
     * @return
     */
    DataResult findPageData(long page, long size, MenuDTO menu);

    /**
     * 根据ID查询
     * @return
     */
    DataResult findOne(String id);

    /**
    * 获取tree型菜单
    * @author Sunke
    * @param [applicationDTO]
    * @return com.otitan.webapp.framework.basepro.model.DataResult
    * @exception
    * @date 2020/9/18 0018 11:08
    */
    List<MenuTreeVO> getTreeMenuList(String appCode, String name, String roleId);

    /**
     * 根据用户ID查询查询菜单
     * @author jiachangsen
     * @param [userId]
     * @return java.util.List<com.otitan.la.forest.system.entity.ApplicationEntity>
     * @exception
     * @date 2020/09/21 11:13
     */
    List<MenuTreeVO> findUserMenuTree(String userId, String appCode);

    /**
     * 格式化菜单数据
     *
     * @param [list]
     * @return java.util.List<com.otitan.la.forest.system.vo.MenuTreeVO>
     * @throws
     * @author jiachangsen
     * @date 2020/09/21 11:45
     */
    List<MenuTreeVO> formatData(List<MenuTreeVO> list, String parentId);
}

